package com.stu.day11.factory1;

/*
  未来如果想支持更多鸟类，枚举类型 BirdType 中可以增加新的类型，
  同时修改 BirdFactory 中的 createBird 方法。
  如果要处理大量的不同类型，可能会考虑使用反射或将鸟类实现存储在一个映射（比如 Map）中。
 */
// 4. 工厂类
enum BirdType {
    BIRD_A, BIRD_B;
}
public class BirdFactory {

    /**
     * 根据指定的鸟类型返回相应的鸟实例
     *
     * @param birdType 鸟类型
     * @return 对应的飞行对象
     * @throws IllegalArgumentException 如果鸟类型无效
     */
    public static Flyable createBird(BirdType birdType) {
        switch (birdType) {
            case BIRD_A:
                return new BirdA();
            case BIRD_B:
                return new BirdB();
            default:
                throw new IllegalArgumentException("Unsupported bird type: " + birdType);
        }
    }
}
class FactoryTest {
    public static void main(String[] args) {
        Flyable birdA = BirdFactory.createBird(BirdType.BIRD_A);
        Flyable birdB = BirdFactory.createBird(BirdType.BIRD_B);

        birdA.fly();  // 输出：BirdA is flying
        birdB.fly();  // 输出：BirdB is flying
    }
}
